﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WareHouse.App
{
    using log4net;

    using WareHouse.Contract.Models;
    using WareHouse.Contract.Services;
    using WareHouse.Service.Services;

    public partial class FrmAgency : Form
    {
        private IWareHouseService wareHouseService;

        private AgencyModel model = new AgencyModel();
        public FrmAgency()
        {
            InitializeComponent();
            wareHouseService=new WareHouseService();
            log4net.Config.XmlConfigurator.Configure();
        }

        private void FrmAgency_Load(object sender, EventArgs e)
        {
            CheckRole();
            this.LoadDataGrid();

        }

        private void LoadDataGrid()
        {
            this.dataGridView1.DataSource = this.wareHouseService.ListAgency();
        }
       

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                model = (AgencyModel)dataGridView1.SelectedRows[0].DataBoundItem;
                chkIsCurrent.Checked = model.IsCurrent;
                txtAdress.Text = model.AgencyAddress;
                txtAgencyId.Text = model.AgencyId.ToString();
                txtAgencyName.Text = model.AgencyName;
                txtDateCreate.Text = model.DateCreate != null
                                         ? string.Format(
                                             "{0:dd-MM-yyyy}",
                                             model.LastUpdate)
                                         : "";

                txtLastUpdate.Text = model.LastUpdate != null ? string.Format(
                                             "{0:dd-MM-yyyy}",
                                            model.LastUpdate) :
                "";
                txtMobile.Text = model.Mobile;
                txtPhone.Text = model.Phone;
                txtUserCreate.Text = this.model.UserCreate ?? "";
                txtUserUpdate.Text = model.UpdateBy ?? "";

            }
            catch (Exception)
            {
                
                return;
            }
        }

        private void UpdateModel()
        {
            model.AgencyId = int.Parse(txtAgencyId.Text != "" ? txtAgencyId.Text : "0");
            model.AgencyName = txtAgencyName.Text;
            model.AgencyAddress = txtAdress.Text;
            model.Mobile = txtMobile.Text;
            model.Phone = txtPhone.Text;
            model.UpdateBy = General.userName;
            model.LastUpdate = DateTime.Now;
            model.IsCurrent = chkIsCurrent.Checked;

        }
        

        private void btnAdd_Click(object sender, EventArgs e)
        {
          



            if (btnAdd.Text == "THÊM MỚI")
            {
                General.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                txtAdress.Text = "";
                txtAgencyId.Text = "";
                txtAgencyName.Text = "";
                txtDateCreate.Text = "";

                txtLastUpdate.Text = "";
                txtMobile.Text = "";
                txtPhone.Text = "";
                txtUserCreate.Text = "";
                txtUserUpdate.Text = "";

                return;
            }
            if (btnAdd.Text == "LƯU")
            {

               
                if (!Validator.IsNull(txtAgencyName.Text))
                {
                    MessageBox.Show("Tên đại lý không thể bỏ trống");
                    return;
                }
                UpdateModel();
                model.EffectiveFromDate = DateTime.Now;
                model.DateCreate = DateTime.Now;
                model.AgencyId = 0;
                model.UserCreate = General.userName;
                var result = this.wareHouseService.SaveOrUpdateAgency(this.model);
                if (result != null)
                {
                     
                    MessageBox.Show("Thêm mới thành công", "Thông báo");
                        
                    General.ChangeButtonStatus("insert", this.btnAdd, this.btnUpdate, this.btnDelete);
                    this.LoadDataGrid();
                }
            }
            else
                MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");


        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            

            if (btnDelete.Text == "HỦY")
            {
                General.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
              
            }
            else if (btnDelete.Text == "XÓA")
            {
                if (MessageBox.Show(General.delConfirmInfo, General.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    this.UpdateModel();
                    if (model.AgencyId > 0)
                    {
                        var result = wareHouseService.DeleteAgency(model);
                        if (result)
                        {
                            General.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                            MessageBox.Show("Xóa thành công", "Thông báo");
                            this.LoadDataGrid();
                            return;
                        }
                        MessageBox.Show("Xóa thất bại", "Thông báo");

                    }
                }
            }
            else return;
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
           
            if (btnUpdate.Text == "CẬP NHẬT")
            {
                General.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
           
                return;

            }
            else
                if (btnUpdate.Text == "HỦY")
                {
                    General.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
              

                }
                else if (btnUpdate.Text == "LƯU")
                {
                    if (model.AgencyId == 0)
                    {
                        MessageBox.Show("Chọn đại lý cần cập nhật");
                        return;
                    }
                    if (!Validator.IsNull(txtAgencyName.Text))
                    {
                        MessageBox.Show("Tên đại lý không thể bỏ trống");
                        return;
                    }

                    UpdateModel();
                   var result= wareHouseService.SaveOrUpdateAgency(model);
                   

                    if (result != null)
                    {
                        MessageBox.Show("Cập nhật thành công", "Thông báo");
                        this.LoadDataGrid();
                        General.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                   
                    }
                }
                else
                    MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
        }

        private void CheckRole()
        {
            if (!wareHouseService.R(General.groupUserId, "agency_edit"))
            {
                btnUpdate.Enabled = false;
                
            }
            if (!wareHouseService.R(General.groupUserId, "agency_delete"))
            {
                btnDelete.Enabled = false;
                
            }
            if (!wareHouseService.R(General.groupUserId, "agency_add"))
            {
                btnAdd.Enabled = false;
                
            }

        }
    }
}
